package com.jpsl.core.items;

/**
 * @author 懒王猫
 */
@FunctionalInterface
public interface Condition {

    /**
     * 条件判断
     *
     * @return true: 符合条件
     */
    boolean test();

    /**
     * 且
     * @param other
     */
    default Condition and(Condition other) {
        return () -> test() && other.test();
    }

    /**
     * 非
     */
    default Condition negate() {
        return () -> !test();
    }

    /**
     * 或
     * @param other
     */
    default Condition or(Condition other) {
        return () -> test() || other.test();
    }

}
